package com.dcm.oss.config;


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * [OSS客户端配置类]
 *
 * @author : [pengrongsheng]
 * @createTime : [2021/3/28]
 */
@Configuration
@Getter
public class OssConfig {

    /**
     * 访问身份验证中用到用户标识
     */
    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;
    /**
     * 用户用于加密签名字符串和oss用来验证签名字符串的密钥
     */
    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;

    /**
     * 阿里云签名有效期(S)
     */
    @Value("${aliyun.oss.policy.expire}")
    private int expire;
    /**
     * 阿里云上传文件大小(M)
     */
    @Value("${aliyun.oss.maxSize}")
    private int maxSize;
    /**
     * 阿里云文件上传成功后的回调地址
     */
    @Value("${aliyun.oss.callback}")
    private String callback;
    /**
     * 阿里云oss的存储空间 (我的桶名)
     */
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;
    /**
     * 阿里云oss对外服务的访问域名
     */
    @Value("${aliyun.oss.endpoint}")
    private String endpoint;
    /**
     * 阿里云上传文件夹路径前缀
     */
    @Value("${aliyun.oss.dir.prefix}")
    private String dirPrefix;

    /**
     * 定义OSS bean对象
     * 在代码中需要把以上这些参数都交给OSS客户端去初始化
     * 创建OSS初始化类把OSS交给spring去管理
     */
    @Bean
    public OSS ossClient() {
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        return ossClient;
    }
}
